System and method for web services packaging

ABSTRACT

A web services packaging system is provided. The web services packaging system comprises a repository for storing information relating to methods of a plurality of web services organized into bundles, and an authorization module for authorizing a client application to access methods in one of the bundles. Each bundle has one or more methods from one or more web services.

PRIORITY

[0001] This patent application claims priority from U.S. PatentApplication No. 60/324,191 entitled “Web Services Infrastructure”, Atwalet. al., filed Sep. 21, 2001.

FIELD OF THE INVENTION

[0002] This invention relates to an infrastructure for billing andauthorizing web services. In particular, the invention relates to webservices packaging.

BACKGROUND OF THE INVENTION

[0003] Software developers wish to provide programmatic functionalityover the Internet through the creation of web services. These webservices provide some valuable technology in which the developer hasexpertise. A web services is often deployed in such a way that the userof the web service has a direct connection with a server hosing the webservice. For example, if there are ten servers hosting different webservices, then there are ten “connection points” into the different webservices.

[0004] One problem that arises from this process of exposing the webservices for consumption over the web by client applications is that inorder to create revenues, the web services must also incorporate billingof the users, auditing of all transactions that occur, administration ofusers and billing schemes and any other common functionality that arisesfrom the fact that a web service is being sold to a customer. Forexample, each web service provider can host any number of web services.Each web service can contain any number of functions (or methods), whichcan potentially be billed in a different manner. Service providers mightwish to tailor billing and authorization schemes for each function toits clients. Therefore, the permutation of user to billing/authorizationpairs to be maintained can be large.

[0005] There are many complexities regarding billing and authorization.Each billing and authorization method can take on any number ofparameters. For example, a pay per use billing scheme can be tagged withany price. Groups of functions, perhaps across web services, might onlymake sense to be billed and authorized the same way. For example, thereare blur image effect filters published by different companies anddistributed across different web services. Billing schemes can varyacross time and temporal cycles. For example, a web service providermight want to charge more during busy hours. Authorization may beindependent of billing schemes. For example, the administrator mightwant to temporarily deny a user from accessing certain functions.However, the billing scheme should remain effective once the restrictionis lifted. Finally, some billing methods are intrinsically tied toauthorization. For example, the client might pay $100 to use a given webservice function one hundred times. Afterwards, the web service willhave to become unavailable.

[0006] There is currently no way of providing billing and authorizationflexibility in web services. It is therefore desirable to provide meansfor providing better billing and authorization of web services.

SUMMARY OF THE INVENTION

[0007] It is an object of the invention to provide a novel system andmethod for providing better billing and authorization of web servicesthat obviates or mitigates at least one of the problems described above.

[0008] In an aspect of the present invention, there is provided a webservices packaging system. The web services packaging system comprises arepository for storing information relating to methods of a plurality ofweb services organized into bundles, and an authorization module forauthorizing a client application to access methods in one of thebundles. Each bundle has one or more methods from one or more webservices.

[0009] In another aspect of the present invention, there is provided amethod for packaging web services. The method comprising steps ofstoring information relating to methods of a plurality of web servicesorganized into bundles, and authorizing a client application to accessmethods in one of the bundles. Each bundle has one or more methods fromone or more web services.

[0010] In another aspect of the present invention, there is providedcomputer readable media storing the instructions and/or statements foruse in the execution in a computer of a method for packaging webservices. The method comprises steps of storing information relating tomethods of a plurality of web services organized into bundles, andauthorizing a client application to access methods in one of thebundles. Each bundle has one or more methods from one or more webservices.

[0011] In another aspect of the present invention, there is providedelectronic signals for use in the execution in a computer of a methodfor packaging web services. The method comprising steps of storinginformation relating to methods of a plurality of web services organizedinto bundles, and authorizing a client application to access methods inone of the bundles. Each bundle has one or more methods from one or moreweb services.

[0012] In another aspect of the present invention, there is provided acomputer program product for use in the execution in a computer of amethod for packaging web services. The computer program productcomprises a repository for storing information relating to methods of aplurality of web services organized into bundles, and an authorizationmodule for authorizing a client application to access methods in one ofthe bundles. Each bundle has one or more methods from one or more webservices.

[0013] Other aspects and features of the present invention will bereadily apparent to those skilled in the art from a review of thefollowing detailed description of preferred embodiments in conjunctionwith the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

[0014] The invention will be further understood from the followingdescription with reference to the drawings in which:

[0015]FIG. 1 is a diagram showing a web services packaging system inaccordance with an embodiment of the invention;

[0016]FIG. 2 is a diagram showing bundling on a per-client applicationbasis in accordance with an embodiment of the invention;

[0017]FIG. 3 is a flowchart showing a method for billing andauthorization of web services in accordance with an embodiment of thepresent invention; and

[0018]FIG. 4 is a diagram showing a web service deployment environmentin accordance with an embodiment of the invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0019] A web service comprises one or more methods which users or clientapplications may invoke. Different web services may have a differentamount of methods. In embodiments of the present invention, web servicesare registered with a central repository. Identifications of the methodsof the web services are stored in the repository and grouped intobundles. A bundle of methods contains one or more methods from one ormore web services. For example, consider four web services where a firstweb service contains 10 methods, a second web service contains 20methods, a third web service contains 100 methods, and a fourth webservice contains 50 methods. A bundle may be created to contain onemethod which belongs to the first web service, two methods which belongto a second web service, and six methods which belong to a fourth webservice. Another bundle may be created to contain six methods whichbelong to the first web services, 11 methods which belong to the secondweb service, 71 methods which belongs to the third web service, and all50 methods which belong to the fourth web service. Other combinations ofmethods belonging to a plurality of web services containing a pluralityof methods may be created.

[0020]FIG. 1 shows an example of a web services packaging system 100 inaccordance with an embodiment of the present invention. The web servicespackaging system 100 comprises a repository 110, and an authorizationmodule 120. The repository 110 contains information relating to methodsof a plurality of web services organized into bundles. Each bundle hasone or more methods from one or more web services. The repository 110may be a database with fields and tables for storing the web serviceaddresses, web service methods, web service method names, clientapplication rights, costs, and other information. The authorizationmodule 120 is used for authorizing a client application to accessmethods in one of the bundles. The authorization module 120 restrictsaccess to the web service methods to authorized or registered clientapplications. The authorization module 120 communicates with therepository 110 to exchanges information for authorization purposes.These components may be software code implemented on a server or codeembedded in hardware. Components may be added or removed from the webservices billing system 100. For example, a registration unit may beadded to the web services billing system 100 for registering web servicewith the system 100.

[0021]FIG. 2 shows another example of a web services packaging system200 in accordance with an embodiment of the present invention. Thepackaging system comprises a repository 110, an authorization module120, a metering module 230, and a billing module 240. The meteringmodule 230 is used to track the usage of web services by clientapplications. The usage of the web services may be logged in therepository 110. The billing module 240 is used to bill clientapplications for their use of the web services.

[0022] The repository 110 communicates with the other components andexchange information. The authorization module 120 communicates with therepository 110 and the billing module 240, and exchanges information forauthorization purposes. The metering module 230 communicates with therepository 110 and the billing module 240, and exchange information. Thebilling module 240 also communicates with the other components andexchange information for billing purposes. The metering module 230records events that take place that can later be used for analysis. Oneclient of the metering module 230 is the billing module 240. Billingschemes may be created such that the billing module 240 requiresinformation regarding which web services methods 303 a clientapplication 15 has used. Such information is tracked by the meteringmodule 230 and stored in the repository 110. Alternatively, the meteringmodule 230 may pass the web services methods 303 usage informationdirectly to the billing module 240 to be used or stored for later use.

[0023] The following description will refer to web services packagingsystems 200. However, the authorization schemes portion of the followingdescription also applies to the web services packaging system 100.

[0024] With reference to FIG. 3, the following describes how the webservices packaging system 200 is used to package web services. FIG. 3shows client applications 15 assigned to packages 301 comprising ofbundles 302. The bundles 302 comprise web services methods or routines303 which a client application 15 may use when calling web servicesmethods 303. In this example, the basic bundle 302 contains matrixmanipulation, math, miscellaneous, and third party web services methods303.

[0025] Web services methods are registered in the repository 110. Theweb services methods are then grouped into bundles 302. Clientapplications 15 may also register with the web services packaging system200. Client applications 15 usage rights relating to the bundles 302 arestored in the repository 110. Thus, by accessing the repository 110 todetermine if a client application 15 has usage rights to a bundle 302,the authorization module 120 determines if a client application 15 isauthorized to access a web services method in that bundle 302.

[0026] A package 301 is a set of bundles 302. For example, in FIG. 3,Package 1 contains a basic bundle, a file conversion bundle, an a textediting bundle. Package 2 contains a basic bundle, a bitmap methodsbundle, a vector methods bundle, and a special effects bundle. As isdescribed above, a bundle is a set (or group) of web services methods303 which may come from several different web services. Other packages301 containing other combinations of bundles 302 may be created.

[0027] Web services methods 303 of the bundles 302 in a package 301 arebilled and authorized in the same manner. Advantageously, a bundle 302simplifies the authorization to access a set of web services methods 303in the bundle 302. If the user or client application has authorizationto access the bundle 302, then the user or client application hasauthorization to access each method 303 in the bundle 302.

[0028] A package 301 allows for customization of billing for the bundles302. For example, consider two packages 301, Package 3 and Package 4,where each package contains the same two bundles 302, Bundle 1 andBundle 2. Package 3 may set Bundle 1 on a per-per-use billing sheme andBundle 2 on a flat rate billing scheme. Package 4 may set both Bundle 1and Bundle 2 on a flat rate billing sheme. Thus, packages 301 allow forbilling flexibility and billing customization of bundles 302.Furthermore, by having different combinations of methods 303 indifferent bundles 302, packages 301 allow for billing flexibilty andbilling customiztion of web services methods 303.

[0029] Advantageously, providing web services functionality throughpackages 301 eliminates much of the logistics needed to manage/presentbilling and authorization requirements. Tables or records in therepository 110 may contain identifications of methods 303 belonging toweb services registered with the web services packaging system 200.Methods 303 of different web services may be organized together into abundle 302.

[0030] Packages 301 organize bundles 302 into defaultbilling/authorization plans to which client applications 15 maysubscribe. The same bundle can reside in different packages 301, withdifferent billing/authorization specifications. In the example shown inFIG. 3, the basic bundle is contained in both packages 301. Thus,subscribers can be offered combinations of methods 303 they desirewithout having to subscribe to a web service.

[0031] Preferably, a client application 15 may only subscribe to onepackage 301. This limitation advantageously reduces the logistics sinceallowing a client application to subscribe to more than one package 301may create a potential scenario of the two packages 301 both containingthe same bundle 302 (or even different bundles 302 with the samemethods) but associated with a different billing/authorization plan. Forexample, the basic bundle in Package 1 is priced at $1 per use and islimited to use on weekdays. The basic bundle in Package 2 contains thesame web services methods the basic bundle in Package 1. However, thereare no limitations to availability for the basic bundle in Package 2 andtherefore, a price of $2 per use is assigned to Package 2.

[0032] In one example of a billing scheme, a web service administratorcan override the default billing/authorization plan specified in thepackage 301 to which a client application 15 subscribes. Advantageously,this allows for further flexibility for billing client applications 15.

[0033] Billing and/or authorization schemes may be created to varydepending on the time of day, day of the week, week of the month, etc.Alternatively, billing/authorization may expire after a set amount oftime has passed since the package 301 was assigned to the clientapplication. For example, a client application may sign up for a trialpackage of web services that allows the client application to use theservices for a trial period, like a month, after which access willexpire. Thus, the system 200 may be designed to be aware of time andtemporal cycles using time stamps as to when the client applicationsigned up, the server clock, and other means of measuring time availableto the server upon which the web services packaging system isimplemented.

[0034] The metering module 230 and authorization module 120 modules mayemploy a plug-in architecture which allows new components to be easilyadded without changing the core architecture. There are several ways inwhich this plug-in archetecture can be accomplished. One exampleprovides that the core architecture searches for the existence ofbilling/authorization schemes on a particular location of the server inwhich the web services packaging system 200 is implemented. Since thearchitecture can be designed to always search the same location,additional schemes can be added. For example, other bundles 302 may beadded to a package 301, or other web services methods 303 may be addedto a bundle 302.

[0035] The determination of a client application's permissions to use agiven resource may depend on the current standing of the clientapplication's billing data. For example, if a client application'sbilling type specifies that the client application has paid a certainfee which allows the client application to make X number of calls to abundle of methods, then on the (X+1)th call that client application willnot be authorized to make the call. To achieve this, the authorizationmodule 120 may query the metering module 230, or the metering module 230may set some state in the authorization module 120.

[0036]FIG. 4 shows a method for billing and authorization of webservices (400) in accordance with an embodiment of the presentinvention. The method (400) begins with providing a listing of webservice functionality (i.e., a listing of packages 301) to which aclient application 15 may subscribe (401). Subscribed clientapplications are given access to method calls 303 of web servicescontained in bundles 302 of a package 301 to which they are a subscriber(402). Access to web services method calls 303 contained in the bundles302 is metered (403). The web services usage is billed pursuant to thebilling scheme of the package 301 (404). The method is done (405).

[0037] Other steps may be added to the method (400), such as registeringa web service with the web services packaging system 200, registering aclient application 15 with the web services packaging system 200, andstoring in the repository 110 the web services and the clientapplications 15 which are authorized to access the web services methods303.

[0038]FIG. 5 shows an example of a web service deployment environment501 in accordance with an embodiment of the present invention. The webservice deployment environment 501 comprises client applications 15, aweb services management system 500, and remote web services 25. The webservices management system 500 comprises a repository 110, anauthentication and authorization module 520, a metering module 230, abilling module 240, a deployment and registration module 550, a gatewaymodule 560, a reporting module 570, an administrator console 580, andlocally hosted web services 25. All components have access to therepository 110. Components may be added or removed from the web servicesmanagement system 500.

[0039] The repository 110, the metering module 230, and the billingmodule 240 are similar to those described above. The administratorconsole 580 is used to perform administration tasks, including creatingbundles 302 and packages 301, provisioning client applications, settingor modifying access rights, generating reports, and other tasks desiredfor administration purposes. Another client of the metering module 230is the administrator console 580 that enables the administrator of theweb services packaging system 500 to track how the system 500 has beenused. Statistics may also be generated and stored in the repository 110in order to help the administrator make business decisions such asoffering new services, adjusting prices, and other business decisionsrelating to the packaging of web services.

[0040] The authentication and authorization module 520 is used whenclient application attempts to access a web services method. The system500 calls on the authentication and authorization module 520 todetermine if the client application indeed is authentic and authorizedto use the web service 25. The metering module 230 is used to track theusage of web services and packages 301. The gateway module 560 is usedfor routing communication between client applications 15 and webservices 25. The reporting module 570 generates reports on the usage ofthe system 500 by administrators for billing and auditing purposes.

[0041] The deployment and registration module 550 is used to registerweb services and/or client applications. When a web service registerswith the system 500, its information is stored in the repository to beused for creating bundles 302 and packages 301. When a clientapplication registers with the system 500, its credentials are stored inthe repository to be used for authentication, authorization, and billingpurposes. A remote web service provider may be billed for registrationinto the system 500 or payed a percentage of the revenues for packagessold to client applications.

[0042] The purpose and practical use of the web services packagingsystem 500 is that it be deployed on the servers which host a company'sweb services 25. The web services 25 are registered with the deploymentand registration module 550 and an administrator may set up clientapplication rights, billing schemes and any other infrastructure forthese services. Furthermore, a host company's web services 25 may becomplimented with remotely located web services 25. In addition the hostcompany may host virtual web services which are comprised of other webservices but connected in such a way to provide new functionality.

[0043] This web services packaging system 500 provides value to the webservices provider, in that it allows for the tailoring of functionalityon a per-client application basis. The alternative would be to developdifferent versions of its web services 25 for different customers, thusrequiring duplication of code and additional strains on disk space, tomaintain multiple copies of similar code. The web services packagingsystem 500 provides the framework around which the web services providercan track usage of the web services 25 and charge accordingly, on aper-client application basis.

[0044] The web services packaging system 500 provides an elegant,comprehensive and extendable system for handling the most complex of webservices 25 billing and authorization scenarios. To web servicesproviders, it means reduced administration, resource and upgrade costs.To the users of client applications, it opens up the possibility offinely grained customized billing and authorization options.

[0045] The web services packaging system 100, 200 according to thepresent invention may be implemented by any hardware, software or acombination of hardware and software having the above describedfunctions. The software code, either in its entirety or a part thereof,may be stored in a computer readable memory. Further, a computer datasignal representing the software code which may be embedded in a carrierwave may be transmitted via a communication network. Such a computerreadable memory and a computer data signal are also within the scope ofthe present invention, as well as the hardware, software and thecombination thereof.

[0046] While particular embodiments of the present invention have beenshown and described, changes and modifications may be made to suchembodiments without departing from the true scope of the invention.

What is claimed is:
 1. A web services packaging system comprising: arepository for storing information relating to methods of a plurality ofweb services organized into bundles, each bundle having one or moremethods from one or more web services; and an authorization module forauthorizing a client application to access methods in one of thebundles.
 2. The web services packaging system as claimed in claim 1,wherein at least one bundle has one or more methods from at least twoweb services.
 3. The web services packaging system as claimed in claim1, wherein client application usage rights to the bundles are stored inthe repository.
 4. The web services packaging system as claimed in claim1, further comprising: a metering module for logging the access; and abilling module for billing the client application.
 5. The web servicespackaging system as claimed in claim 4, wherein the bundles areorganized into packages.
 6. The web services packaging system as claimedin claim 5, wherein client application usage rights to the packages arestored in the repository.
 7. The web services packaging system asclaimed in claim 5, wherein prices of the packages are stored in therepository.
 8. The web services packaging system as claimed in claim 1,further comprising an administrator console for administrating the webservices packaging system.
 9. The web services packaging system asclaimed in claim 1, further comprising a deployment and registrationmodule for registering web services and client applications.
 10. The webservices packaging system as claimed in claim 1, further comprising areporting module for reporting usage of the web services packagingsystem for auditing and billing purposes.
 11. The web services packagingsystem as claimed in claim 1, further comprising a gateway module forrouting communication between the client application and a web service.12. The web services packaging system as claimed in claim 1, wherein therepository is a database with fields and tables for storing the webservices addresses and method calls.
 13. A method for packaging webservices, the method comprising steps of: storing information relatingto methods of a plurality of web services organized into bundles, eachbundle having one or more methods from one or more web services; andauthorizing a client application to access methods in one of thebundles.
 14. The method as claimed in claim 13, wherein the step ofstoring comprises the step of storing at least one bundle having one ormore methods from at least two web services.
 15. The method as claimedin claim 13, further comprising the step of organizing a group of webservices methods into a bundle.
 16. The method as claimed in claim 13,wherein the storing step comprises the step of storing clientapplication usage rights to the bundles in the repository.
 17. Themethod as claimed in claim 13, further comprising the steps of: loggingthe access; and billing the client application.
 18. The method asclaimed in claim 17, further comprising the step of organizing thebundles into packages.
 19. The method as claimed in claim 18, furthercomprising the step of storing client application usage rights to thepackages in the repository.
 20. The method as claimed in claim 18,further comprising the step of storing prices of the packages in therepository.
 21. The method as claimed in claim 13, further comprisingthe step of administrating the web services packaging system.
 22. Themethod as claimed in claim 13, further comprising the step ofregistering web services and client applications.
 23. The method asclaimed in claim 13, further comprising the step of reporting usage ofthe web services packaging system for auditing and billing purposes. 24.The method as claimed in claim 13, further comprising the step ofrouting communication between the client application and a web service.25. The method as claimed in claim 13, wherein the step of storingcomprises the step of storing web services addresses and method calls ina database with fields and tables.
 26. Computer readable media storingthe instructions and/or statements for use in the execution in acomputer of a method for packaging web services, the method comprisingsteps of: storing information relating to methods of a plurality of webservices organized into bundles, each bundle having one or more methodsfrom one or more web services; and authorizing a client application toaccess methods in one of the bundles.
 27. Electronic signals for use inthe execution in a computer of a method for packaging web services, themethod comprising steps of: storing information relating to methods of aplurality of web services organized into bundles, each bundle having oneor more methods from one or more web services; and authorizing a clientapplication to access methods in one of the bundles.
 28. A computerprogram product for use in the execution in a computer of a method forpackaging web services, the computer program product comprising: arepository for storing information relating to methods of a plurality ofweb services organized into bundles, each bundle having one or moremethods from one or more web services; and an authorization module forauthorizing a client application to access methods in one of thebundles.